<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/asm/linkage.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/asm/linkage.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X0FTTV9YODZfTElOS0FHRV9IXzA_"><span class="b">_ASM_X86_LINKAGE_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X0FTTV9YODZfTElOS0FHRV9IXzA_"><span class="b">_ASM_X86_LINKAGE_H</span></a>
<a name="3" /><span class="True">       3:</span> 
<a name="4" /><span class="True">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">stringify</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="True">       5:</span> 
<a name="6" /><span class="True">       6:</span> <span class="f">#</span><span class="n">undef</span> <a href="cpu.c_macros_ref.html#_bm90cmFjZV8x"><span class="b">notrace</span></a>
<a name="7" /><span class="True">       7:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bm90cmFjZV8x"><span class="b">notrace</span></a> <span class="b">__attribute__</span><span class="f">(</span><span class="f">(</span><span class="b">no_instrument_function</span><span class="f">)</span><span class="f">)</span>
<a name="8" /><span class="True">       8:</span> 
<a name="9" /><span class="False">       9:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_X86_32</span>
<a name="10" /><span class="False">      10:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_YXNtbGlua2FnZV8w"><span class="b">asmlinkage</span></a> <a href="cpu.c_macros_ref.html#_Q1BQX0FTTUxJTktBR0VfMA__"><span class="b">CPP_ASMLINKAGE</span></a> <span class="b">__attribute__</span><span class="f">(</span><span class="f">(</span><span class="b">regparm</span><span class="f">(</span><span class="c">0</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="11" /><span class="False">      11:</span> 
<a name="12" /><span class="False">      12:</span> <span class="k">/*</span>
<a name="13" /><span class="False">      13:</span> <span class="k"> * Make sure the compiler doesn&apos;t do anything stupid with the</span>
<a name="14" /><span class="False">      14:</span> <span class="k"> * arguments on the stack - they are owned by the *caller*, not</span>
<a name="15" /><span class="False">      15:</span> <span class="k"> * the callee. This just fools gcc into not spilling into them,</span>
<a name="16" /><span class="False">      16:</span> <span class="k"> * and keeps it from doing tailcall recursion and/or using the</span>
<a name="17" /><span class="False">      17:</span> <span class="k"> * stack slots for temporaries, since they are live and &quot;used&quot;</span>
<a name="18" /><span class="False">      18:</span> <span class="k"> * all the way to the end of the function.</span>
<a name="19" /><span class="False">      19:</span> <span class="k"> *</span>
<a name="20" /><span class="False">      20:</span> <span class="k"> * NOTE! On x86-64, all the arguments are in registers, so this</span>
<a name="21" /><span class="False">      21:</span> <span class="k"> * only matters on a 32-bit kernel.</span>
<a name="22" /><span class="False">      22:</span> <span class="k"> */</span>
<a name="23" /><span class="False">      23:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_YXNtbGlua2FnZV9wcm90ZWN0XzA_"><span class="b">asmlinkage_protect</span></a><span class="f">(</span><span class="b">n</span><span class="f">,</span> <span class="b">ret</span><span class="f">,</span> <span class="b">args</span><span class="f">...</span><span class="f">)</span> \
<a name="24" /><span class="False">      24:</span>     <span class="b">__asmlinkage_protect</span><span class="f">##</span><span class="b">n</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="f">##</span><span class="b">args</span><span class="f">)</span>
<a name="25" /><span class="False">      25:</span> <span class="f">#</span><span class="n">define</span> <span class="b">__asmlinkage_protect_n</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="b">args</span><span class="f">...</span><span class="f">)</span> \
<a name="26" /><span class="False">      26:</span>     <span class="b">__asm__</span> <span class="b">__volatile__</span> <span class="f">(</span><span class="e">&quot;&quot;</span> <span class="f">:</span> <span class="e">&quot;=r&quot;</span> <span class="f">(</span><span class="b">ret</span><span class="f">)</span> <span class="f">:</span> <span class="e">&quot;0&quot;</span> <span class="f">(</span><span class="b">ret</span><span class="f">)</span><span class="f">,</span> <span class="f">##</span><span class="b">args</span><span class="f">)</span>
<a name="27" /><span class="False">      27:</span> <span class="f">#</span><span class="n">define</span> <span class="b">__asmlinkage_protect0</span><span class="f">(</span><span class="b">ret</span><span class="f">)</span> \
<a name="28" /><span class="False">      28:</span>     <span class="b">__asmlinkage_protect_n</span><span class="f">(</span><span class="b">ret</span><span class="f">)</span>
<a name="29" /><span class="False">      29:</span> <span class="f">#</span><span class="n">define</span> <span class="b">__asmlinkage_protect1</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="b">arg1</span><span class="f">)</span> \
<a name="30" /><span class="False">      30:</span>     <span class="b">__asmlinkage_protect_n</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg1</span><span class="f">)</span><span class="f">)</span>
<a name="31" /><span class="False">      31:</span> <span class="f">#</span><span class="n">define</span> <span class="b">__asmlinkage_protect2</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="b">arg1</span><span class="f">,</span> <span class="b">arg2</span><span class="f">)</span> \
<a name="32" /><span class="False">      32:</span>     <span class="b">__asmlinkage_protect_n</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg1</span><span class="f">)</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg2</span><span class="f">)</span><span class="f">)</span>
<a name="33" /><span class="False">      33:</span> <span class="f">#</span><span class="n">define</span> <span class="b">__asmlinkage_protect3</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="b">arg1</span><span class="f">,</span> <span class="b">arg2</span><span class="f">,</span> <span class="b">arg3</span><span class="f">)</span> \
<a name="34" /><span class="False">      34:</span>     <span class="b">__asmlinkage_protect_n</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg1</span><span class="f">)</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg2</span><span class="f">)</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg3</span><span class="f">)</span><span class="f">)</span>
<a name="35" /><span class="False">      35:</span> <span class="f">#</span><span class="n">define</span> <span class="b">__asmlinkage_protect4</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="b">arg1</span><span class="f">,</span> <span class="b">arg2</span><span class="f">,</span> <span class="b">arg3</span><span class="f">,</span> <span class="b">arg4</span><span class="f">)</span> \
<a name="36" /><span class="False">      36:</span>     <span class="b">__asmlinkage_protect_n</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg1</span><span class="f">)</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg2</span><span class="f">)</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg3</span><span class="f">)</span><span class="f">,</span> \
<a name="37" /><span class="False">      37:</span>                   <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg4</span><span class="f">)</span><span class="f">)</span>
<a name="38" /><span class="False">      38:</span> <span class="f">#</span><span class="n">define</span> <span class="b">__asmlinkage_protect5</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="b">arg1</span><span class="f">,</span> <span class="b">arg2</span><span class="f">,</span> <span class="b">arg3</span><span class="f">,</span> <span class="b">arg4</span><span class="f">,</span> <span class="b">arg5</span><span class="f">)</span> \
<a name="39" /><span class="False">      39:</span>     <span class="b">__asmlinkage_protect_n</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg1</span><span class="f">)</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg2</span><span class="f">)</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg3</span><span class="f">)</span><span class="f">,</span> \
<a name="40" /><span class="False">      40:</span>                   <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg4</span><span class="f">)</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg5</span><span class="f">)</span><span class="f">)</span>
<a name="41" /><span class="False">      41:</span> <span class="f">#</span><span class="n">define</span> <span class="b">__asmlinkage_protect6</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="b">arg1</span><span class="f">,</span> <span class="b">arg2</span><span class="f">,</span> <span class="b">arg3</span><span class="f">,</span> <span class="b">arg4</span><span class="f">,</span> <span class="b">arg5</span><span class="f">,</span> <span class="b">arg6</span><span class="f">)</span> \
<a name="42" /><span class="False">      42:</span>     <span class="b">__asmlinkage_protect_n</span><span class="f">(</span><span class="b">ret</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg1</span><span class="f">)</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg2</span><span class="f">)</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg3</span><span class="f">)</span><span class="f">,</span> \
<a name="43" /><span class="False">      43:</span>                   <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg4</span><span class="f">)</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg5</span><span class="f">)</span><span class="f">,</span> <span class="e">&quot;m&quot;</span> <span class="f">(</span><span class="b">arg6</span><span class="f">)</span><span class="f">)</span>
<a name="44" /><span class="False">      44:</span> 
<a name="45" /><span class="True">      45:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_X86_32 */</span>
<a name="46" /><span class="True">      46:</span> 
<a name="47" /><span class="False">      47:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">__ASSEMBLY__</span>
<a name="48" /><span class="False">      48:</span> 
<a name="49" /><span class="False">      49:</span> <span class="f">#</span><span class="n">define</span> <span class="b">GLOBAL</span><span class="f">(</span><span class="b">name</span><span class="f">)</span>    \
<a name="50" /><span class="False">      50:</span>     <span class="f">.</span><span class="b">globl</span> <span class="b">name</span><span class="f">;</span>    \
<a name="51" /><span class="False">      51:</span>     <span class="b">name</span><span class="f">:</span>
<a name="52" /><span class="False">      52:</span> 
<a name="53" /><span class="False">      53:</span> <span class="f">#</span><span class="n">if</span> <span class="b">defined</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Q09ORklHX1g4Nl82NF8w"><span class="b">CONFIG_X86_64</span></a><span class="f">)</span> <span class="f">||</span> <span class="b">defined</span><span class="f">(</span><span class="b">CONFIG_X86_ALIGNMENT_16</span><span class="f">)</span>
<a name="54" /><span class="False">      54:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19BTElHTl8w"><span class="b">__ALIGN</span></a>        <span class="f">.</span><span class="b">p2align</span> <span class="c">4</span><span class="f">,</span> <span class="c">0x90</span>
<a name="55" /><span class="False">      55:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19BTElHTl9TVFJfMA__"><span class="b">__ALIGN_STR</span></a>    <a href="cpu.c_macros_ref.html#_X19zdHJpbmdpZnlfMA__"><span class="b">__stringify</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19BTElHTl8w"><span class="b">__ALIGN</span></a><span class="f">)</span>
<a name="56" /><span class="False">      56:</span> <span class="f">#</span><span class="n">endif</span>
<a name="57" /><span class="False">      57:</span> 
<a name="58" /><span class="True">      58:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __ASSEMBLY__ */</span>
<a name="59" /><span class="True">      59:</span> 
<a name="60" /><span class="True">      60:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _ASM_X86_LINKAGE_H */</span>
<a name="61" /><span class="True">      61:</span> 
<a name="62" /><span class="True">      62:</span> </pre>
  </body>
</html>
